#pragma once

#include "poke_dialog_helper.h"
#include "poke_framework.h"
#include "afxwin.h"

// CPokeDlgWindowBasicInfo dialog

class CPokeDlgWindowBasicInfo : public CDialog, public M::Atom
{
    DECLARE_DYNAMIC(CPokeDlgWindowBasicInfo)

public:
    CPokeDlgWindowBasicInfo(CWnd* pParent = NULL);   // standard constructor
    virtual ~CPokeDlgWindowBasicInfo();

// Dialog Data
    enum { IDD = IDD_DIALOG_WINDOW_BASIC_INFO };

protected:
    void PokeWindow();
    CString OutputWindow(HWND hWindow, CString &strClassName); 

protected:
    DISABLE_DIALOG_DEFAULT_ACTION;
    virtual BOOL OnInitDialog();
    virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support

    virtual M::String name() const { return PAN_DLG_WINDOW_BASIC_INFO; }
    virtual bool OnExecute(const M::AtomEndPoint &oSrcAtom, int nFuncId, void *pParams, void *pIOParams);
    virtual bool OnEvent(const M::AtomEndPoint &oSrcAtom, int nEventId, void *pParams);
    bool OnExecuteHotkey(int nHotkeyId);

    DECLARE_MESSAGE_MAP()

private:
    CListBox m_oStyleList;
    CListBox m_oExStyleList;

    CString m_strProcInfo;
    CString m_strThreadInfo;
    int m_nWindowX;
    int m_nWindowY;
    int m_nWindowWidth;
    int m_nWindowHeight;
    CString m_strWindowParent;
    CString m_strWindowParentName;
    CString m_strWindowOwner;
    CString m_strWindowClientArea;
    CString m_strThreadFocus;
    CString m_strThreadActive;
    CString m_strThreadCapture;
    CString m_strForeground;
    CString m_strWindowStyle;
    CString m_strWindowExStyle;
    bool m_bIsInputing;

public:
    afx_msg void OnTimer(UINT_PTR nIDEvent);
    afx_msg void OnEnChangeEditWindowX();
    afx_msg void OnEnChangeEditWindowY();
    afx_msg void OnEnChangeEditWindowWidth();
    afx_msg void OnEnChangeEditWindowHeight();
    afx_msg void OnLbnSelchangeListWindowStyle();
    afx_msg void OnLbnSelchangeListWindowExstyle();
    afx_msg void OnBnClickedButtonGotoParent();
    afx_msg void OnBnClickedButtonGotoOwner();
    afx_msg void OnBnClickedButtonGotoFocus();
    afx_msg void OnBnClickedButtonGotoActive();
    afx_msg void OnBnClickedButtonGotoCapture();
    afx_msg void OnEnChangeEditWindowParent();
    afx_msg void OnBnClickedButtonGotoForeground();
};
